package com.ruoyi.framework.config;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * WebMvc配置类
 * 主要作用：配置URL路径与本地文件路径的映射（让服务器知道去哪里找图片等静态资源）
 */
@Configuration  // 标记这是一个配置类，Spring会自动加载
public class WebMvcConfig implements WebMvcConfigurer {

    // 从配置文件读取头像的本地存储路径（例如：D:/ruoyi/upload/avatar/）
    @Value("${file.upload.path}")
    private String uploadPath;

    // 从配置文件读取头像的访问URL路径（例如：/upload/avatar/）
    @Value("${file.access.url}")
    private String accessUrl;

    /**
     * 配置资源映射规则
     * 当访问 "accessUrl + 任意路径" 时，服务器会去 "uploadPath" 文件夹下找对应的文件
     */
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        // 关键配置：映射头像访问路径到本地存储路径
        // 例如：访问 http://localhost:8080/upload/avatar/20250918/xxx.jpg 时，
        // 服务器会自动去 D:/ruoyi/upload/avatar/20250918/xxx.jpg 找文件
        registry.addResourceHandler(accessUrl + "/**")  // 匹配前端访问的URL
                .addResourceLocations("file:" + uploadPath);  // 映射到本地文件夹路径

        // 保留框架默认的静态资源映射（如CSS、JS等）
        registry.addResourceHandler("/static/**")
                .addResourceLocations("classpath:/static/");
    }
}
